Native applications allow for developers to take advantage of advanced user interface elements and state management. Problems arise when the native application interacts with services using tightly coupled data and presentation layers.